package com.dxb.test.sort;

/**
 * 冒泡排序
 * 基本思想：
 * 两个数比较大小，较大的数下沉，较小的数冒起来。
 */
public class BobSort {
    private int[] array;
    private int length;

    /**
     * 构造函数
     *
     * @param array
     */
    public BobSort(int[] array) {
        this.array = array;
        this.length = array.length;
    }

    /**
     * 打印数组中数据
     */
    public void display() {
        for (int i : array) {
            System.out.print(i + " ");
        }
        System.out.println();
    }

    /**
     * 冒泡排序
     */
    public void bobSort() {
        for (int i = 0; i < length - 1; i++) {
            for (int j = 0; j < length - 1 - i; j++) {
                if (array[j] > array[j + 1]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }

    public void bobSort2() {
        for (int i = 0; i < length - 1; i++) {
            for (int j = length - 1 - i; j > 0; j--) {
                if (array[j] > array[j - 1]) {
                    int temp = array[j];
                    array[j] = array[j - 1];
                    array[j - 1] = temp;
                }
            }
        }
    }

    /**
     * 测试方法
     *
     * @param args
     */
    public static void main(String[] args) {
        int[] array = {77, 29, 28, 36, 33, 25, 10};
        BobSort bobSort = new BobSort(array);
        System.out.println("排序前的数据为：");
        bobSort.display();
        bobSort.bobSort2();
        System.out.println("排序后的数据为：");
        bobSort.display();
    }
}
